package com.test;

import java.util.Arrays;
/**
 * 求两个数组的公共部分
 * @author 王磊
 * 2017年3月28日
 */
public class FindPublicNum {
	
	public static int[] FindPublicNum(int num1[],int num2[]){
		int num3[];
		int i = 0,j = 0,k=0;
		//排序
		Arrays.sort(num1);
		Arrays.sort(num2);
		//定义num3的长度
		num3 = new int[num1.length>num2.length?num2.length:num1.length];
		while(i<num1.length && j<num2.length){
			if(num1[i]>num2[j]){
				j++;
			}else if(num1[i]<num2[j]){
				i++;
			}else{
				num3[k]=num1[i];
				j++;
				i++;
				k++;
			}
		}
		num3 = Arrays.copyOf(num3, k);
		return num3;
	}
	
	public static void main(String[] args) {
		int[] num1 = {10,2,3,4,13,11,30};
		int[] num2 = {12,4,3,5,8,10,30};
		int num3[];
		num3 = FindPublicNum(num1, num2);
		for(int i=0;i<num3.length;i++){
			System.out.println(num3[i]);
		}
		
	}
	
}
